//
//  VisitorTableViewController.swift
//  Weibo
//
//  Created by 胡国璋 on 15/10/17.
//  Copyright © 2015年 胡国璋. All rights reserved.
//

import UIKit

class VisitorTableViewController: UITableViewController {

    /// 用户登录标记
    private var userLogon =  UserAccountViewModel.sharedUserAccout.userLogon
    
    /**
    提问
    1. 应用程序中有几个 visitorView? - 每个控制器各自有各自不同的 访客视图！
    2. 访客视图如果用懒加载会怎样？- 如果使用懒加载，访客视图始终都会被创建出来！
    */
    /// 访客视图
    var visitorView: VisitorView?
    
    override func loadView() {
        
        // 根据用户登录情况，决定显示的根视图
        userLogon ? super.loadView() : setupVistitorView()
    }
    
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        
        print(visitorView)
    }
    
    /// 设置访客视图 - 让每一个`小`函数
    private func setupVistitorView(){
        
        //替换根视图
        visitorView = VisitorView()
        
        /// 通过监听方法传递点击事件
//        // 设置代理
//        visitorView?.delegate = self
        
        view = visitorView
        
        /// 通过监听方法传递点击事件
        visitorView?.registerButton.addTarget(self, action: "visitorViewDidRegister", forControlEvents: UIControlEvents.TouchUpInside)
        visitorView?.loginButton.addTarget(self, action: "visitorViewDidLogin", forControlEvents: UIControlEvents.TouchUpInside)
        
        // 设置导航栏按钮
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "注册", style: UIBarButtonItemStyle.Plain, target: self, action: "visitorViewDidRegister")
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "登陆", style: UIBarButtonItemStyle.Plain, target: self, action: "visitorViewDidLogin")
    }
    
}

// MARK: - 访客视图监听方法
/// 通过监听方法传递点击事件
//extension VisitorTableViewController: VisitorViewDelegate {
extension VisitorTableViewController {
    func visitorViewDidRegister() {
        print("注册")
    }
    
    func visitorViewDidLogin() {
        let vc = OAuthViewController()
        let nav = UINavigationController(rootViewController: vc)
         
        presentViewController(nav, animated: true, completion: nil)
    }
    
}